home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / ACORNUSERS / EMULATOR / STEM / !STem / Documents / History < prev    next >
Text File  |  1998-04-29  |  22KB  |  453 lines

  1.  
  2.                               The History of !STem
  3.                              ======================
  4.  
  5.  
  6. This file lists the entire history of STem in reverse chronological order. All
  7. major changes, additions and other important details have been recorded.
  8.  
  9.  
  10. Version 1.03
  11. ============
  12.   1st May, 1998
  13.     • Version 1.03 was released.
  14.  
  15.   27th April, 1998
  16.     • Tests showed that the NEGX instruction sometimes produced the wrong X and
  17.       C flags. This has now been corrected.
  18.  
  19.   24th April, 1998
  20.     • Large changes were made to the address decoding mechanisms to better suit
  21.       the capabilities of the ARM processor. A speed increase of about 2 percent
  22.       was detected by the QuickIndex benchmark program.
  23.  
  24.   16th April, 1998
  25.     • A major bug in the emulation of the MFP chip was fixed. The wrong
  26.       interrupts were being generated when programs switched into
  27.       automatic-end-of interrupt mode, thus causing all sorts of unwanted
  28.       side-effects. In particular, packets of data from the keyboard processor
  29.       were being ignored, and the 200Hz system timer was not being updated.
  30.  
  31.   14th April, 1998
  32.     • Fixed a minor bug in the IKBD code for sending time/date packets. The C
  33.       functions for obtaining the month of the year return a number in the range
  34.       0-11, whereas the IKBD is required to return a number in the range 1-12.
  35.  
  36.   6th April, 1998
  37.     • Speeded up the MFP timer C so that it is now only 128 times slower than
  38.       the real thing. The only noticable effect on the emulator is that the
  39.       time taken for TOS 2.06 to boot has been reduced to approximately 2
  40.       minutes.
  41.  
  42.   3rd April, 1998
  43.     • Memory accesses were speeded up by removing some code which checked for
  44.       pending bus and address errors - these checks were wasteful since errors
  45.       are relatively rare. Instead, the memory mappings are temporarily altered
  46.       when an error is detected so as to prevent further accesses. The original
  47.       memory mappings are then restored when the error has been dealt with.
  48.  
  49.   29th March, 1998
  50.     • One or two bug fixes were made to the DMA controller. In particular, the
  51.       method of persuading the atari operating system to ignore all unconnected
  52.       devices on the DMA bus (by generating pseudo errors - as mentioned in a
  53.       previous history entry) proved to be unsuitable for TOS 2.06. This version
  54.       of the operating system will retry failed communications on the DMA bus
  55.       several times before giving up - hence making the boot procedure
  56.       excessively time consuming. It is better to pretend that all devices on
  57.       the DMA bus are connected to something, but to pass a useless boot sector
  58.       when requested.
  59.  
  60.   22nd March, 1998
  61.     • Added keyboard control for joystick port 1. When NUM LOCK is off, the main
  62.       joystick can be controlled using the numeric keypad. When NUM LOCK is on,
  63.       the keys revert to their normal mappings.
  64.  
  65.   14th March, 1998
  66.     • The code for STOP instruction was finally written. This removes the
  67.       'unimplemented instruction' error, and means that emulation of the 68000
  68.       processor is now complete.
  69.  
  70.   8th March, 1998
  71.     • Fixed a bug in the calculation of the carry flag for the SUB, CMP and NEG
  72.       instructions. As mentioned in an earlier history entry, the C flag on the
  73.       68000 is the opposite to the C flag on the ARM processor for some
  74.       operations, so an inversion is required. Tests showed that the previous
  75.       fix was not entirely correct, hence the need for further amendments. TOS
  76.       2.06 now boots, however it takes approximately 15 minutes on a 233MHz
  77.       Strong ARM computer :-(
  78.  
  79.  
  80. Version 1.02
  81. ============
  82.   8th March, 1998
  83.     • Version 1.02 was released.
  84.  
  85.   3rd March, 1998
  86.     • Added a test to the initialisation code to ensure STem is not being run in
  87.       a task window. This is necessary since when STem is running it makes
  88.       various changes to the system which could have adverse effects on other
  89.       programs.
  90.  
  91.   2nd March, 1998
  92.     • A minor change was made to the emulation of the intelligent keyboard. It
  93.       can now respond to requests to read it's internal clock, and will return
  94.       the current time and date. This now allows the CONTROL.ACC program to run
  95.       without locking up.
  96.  
  97.   23rd February, 1998
  98.     • I finally got around to writing code to identify French, German, Italian,
  99.       Swedish and US ROM images. The code for identifying Spanish and UK ROMs
  100.       was already in place. With the exception of Spanish ROMs, all keyboard
  101.       mappings will be the same as for the UK ROMs - this is not correct, but
  102.       working out the proper mappings is a tedious process.
  103.  
  104.   14th February, 1998
  105.     • Added some code to handle accesses to the STe microwire bus. It's
  106.       implementation is not correct, but it now allows STOS basic to run. A side
  107.       effect is that TOS versions 1.06 and 1.62 must always have 'DMA Playback'
  108.       enabled, otherwise they will fail to boot properly.
  109.  
  110.   9th February, 1998
  111.     • Modified the debugging code so that it can be enabled at any time, not
  112.       just while I am developing it. This will hopefully make it easier to
  113.       diagnose problems other people are having with STem.
  114.  
  115.   6th February, 1998
  116.     • Changed the way in which instructions in the newer members of the MC680x0
  117.       family are decoded. Each instruction needs to be checked to ensure it is
  118.       valid for the currently selected processor - this is now done once when
  119.       the emulator is loaded, instead of doing it each time an instruction is
  120.       executed.
  121.  
  122.   3rd February, 1998
  123.     • Timer C in the MFP chip was modified so that it maintains time accurately.
  124.       It now 'ticks' according to the value of the monotonic timer and takes
  125.       account of it's settings. However, to avoid overloading the emulator it is
  126.       necessary to scale the timer. On average it will be 512 times slower than
  127.       it ought to be.
  128.  
  129.   1st February, 1998
  130.     • All known blitter related problems were solved. Of these, three were
  131.       caused by programming errors in my blitter chip emulator. A fourth was
  132.       due to some highly suspicious code in the Atari operating system which
  133.       made too many assumptions about the speed of the blitter chip - this had
  134.       the effect of starting the blitter more than once for each task.
  135.  
  136.   31st January, 1998
  137.     • In an attempt to speed up the emulator the code for reading data from the
  138.       ROM was rewritten in assembler. In order to avoid the overhead caused by
  139.       converting data between big and little endian formats, I have devised a
  140.       method which alleviates the problem somewhat. It involves storing the
  141.       contents of the ROM in a non-sequential manner, i.e. bytes which are
  142.       logically next to each other will no longer be physically next to each
  143.       other. This means that when the data is subsequently read back it will
  144.       automatically be in the correct byte order.
  145.  
  146.  
  147. Version 1.01
  148. ============
  149.   28th January, 1998
  150.     • Version 1.01 was released.
  151.  
  152.   19th January, 1998
  153.     • Moved all of the help messages out of the configuration program, and
  154.       placed them in the 'Messages' file. The MessageTrans module is now used to
  155.       access the messages instead.
  156.  
  157.   14th January, 1998
  158.     • Modified the addressing range of the YM2149 sound chip so that it's
  159.       shadow registers will be decoded properly, instead of producing bus
  160.       errors. This enables a few demo programs to work without crashing.
  161.  
  162.   4th January, 1998
  163.     • Added some code to ensure that only 512 byte sectors are used on disks and
  164.       disk images. This is necessary because of limitations in the Atari
  165.       operating system and the DMA hardware. All other size sectors will cause
  166.       STem to abort with an error message.
  167.  
  168.   3rd January, 1998
  169.     • I discovered that the Atari operating system was trying to read the boot
  170.       sector from each of the 8 DMA devices. However, due to the fact that I
  171.       hadn't fully implemented the DMA chip the boot sector from the floppy disk
  172.       was being loaded instead. The virus contained within the floppy disk boot
  173.       sector was only designed to be loaded once, hence the reason why it
  174.       crashed. It was not sufficient to send signals to the operating system to
  175.       tell it that there were no DMA devices present, because this caused it to
  176.       retry the failed operation again and again. The solution was to pretend
  177.       that there were 8 hard disks connected to the DMA bus, but that they were
  178.       all broken - not very elegant, but it works:-) The virus now loads without
  179.       crashing!
  180.  
  181.   1st January, 1998
  182.     • I decided to investigate a disk containing some games which crashed when
  183.       the boot sector was loaded. Lo and behold I found out that the boot sector
  184.       was infected with a virus - and worse still, I had been using the very
  185.       same disk for the past 6 years without noticing it! But why wasn't the
  186.       virus working properly? Hmmm...
  187.  
  188.   31st December, 1997
  189.     • More problems associated with mode changes were discovered whilst
  190.       attempting to get Gauntlet running. The first was due to the way that
  191.       RISC OS resets the user defined palette when the mode is changed - this
  192.       was fixed by forcing STem to do a complete palette update after each mode
  193.       change. The second was that mode changes cause a temporary glitch in the
  194.       graphics, because the screen is cleared by RISC OS, then immediately
  195.       updated by STem. In some cases the glitch can be avoided, because the mode
  196.       before and after is exactly the same, so we don't need to involve RISC OS
  197.       at all.
  198.  
  199.   31st December, 1997
  200.     • The problem of the mouse pointer sometimes getting positioned in the top
  201.       right corner of the screen during the boot process was solved. It was down
  202.       to the way RISC OS repositions the mouse whenever a screen mode change
  203.       occurs, thus causing spurious mouse movement packets to be send by my IKBD
  204.       emulator.
  205.  
  206.   28th December, 1997
  207.     • A compiler warning alerted me to a minor problem in the intelligent
  208.       keyboard emulation - the function call for executing IKBD commands had
  209.       been completely omitted. After adding the necessary function call it then
  210.       became apparent that the mouse handling code was incorrect, because all
  211.       mouse movements in the Y direction were inversed. This bug was then fixed.
  212.  
  213.   27th December, 1997
  214.     • Many tiny optimisations were made to the assembler code - notably to the
  215.       shift and rotate instructions. Better use was made of the ability to
  216.       conditionally execute ARM instructions, particularly to avoid unnecessary
  217.       load and saves to memory. A bug in the ASL instruction was also fixed.
  218.  
  219.  
  220. Version 1.00 Beta
  221. =================
  222.   13th December, 1997
  223.     • The entire strategy for decoding MC68000 instructions was changed, and as
  224.       a result of this the emulator now runs 25% faster than it did previously.
  225.       The executable size remained almost constant, but the run-time memory
  226.       requirements increased by 256Kbytes.
  227.  
  228.   8th December, 1997
  229.     • The first beta version was released. Compatibility with the StrongARM
  230.       processor was confirmed.
  231.  
  232.   6th December, 1997
  233.     • A major problem involving relocatable programs being loaded incorrectly
  234.       was solved. It turned out that the EXT.W instruction was setting the
  235.       condition code flags based on data which was slightly corrupted.
  236.  
  237.   4th December, 1997
  238.     • Using a module for emulating the YM2149 sound chip, supplied by Andreas
  239.       Stroiczek, I managed to persuade STem to output some simple beeps and
  240.       pings. Unfortunately, this is the best that is possible at the moment,
  241.       because STem does not generate timing interrupts at the correct rate.
  242.       These interrupts are used by programs to control the playback of sound,
  243.       and are absolutely necessary.
  244.  
  245.   29th November, 1997
  246.     • At last, a long standing problem involving double sided disks not being
  247.       readable by the operating system, was finally resolved. The problem was
  248.       due to an assumption I made about the layout of DOS format disks, which
  249.       subsequently turned out to be wrong.
  250.  
  251.   23rd November, 1997
  252.     • Modified the address decoding of the blitter chip, because I discovered
  253.       that various parts of memory were being corrupted whenever this chip was
  254.       used. The blitter chip still doesn't work properly :-(
  255.  
  256.   21st November, 1997
  257.     • Spent a considerable amount of time hunting down a bug which was causing
  258.       TOS 1.06 to crash when booting. Eventually, I concluded that the ROM image
  259.       was corrupt (as it turns out, by being 192Kbytes long instead of
  260.       256Kbytes!), and after obtaining a new ROM image, I managed to get it
  261.       booting successfully.
  262.  
  263.   14th November, 1997
  264.     • Added the ability to create long exception stack frames for processors
  265.       greater than the MC68000. In general, the extra information which is
  266.       stored for bus/address errors is meaningless, and could not be used to
  267.       resume execution of the aborted instruction.
  268.  
  269.   10th November, 1997
  270.     • Doubts surfaced about some instructions which were loading/storing the
  271.       wrong size of data when using the address registers. This was subsequently
  272.       confirmed after I obtained an updated version of the MC68000 users manual.
  273.       Although this bug would only have surfaced in a tiny number of very
  274.       specific cases, I suspect that it was responsible for a large number of
  275.       unexpected crashes which I experienced. Needless to say, this problem has
  276.       now been fixed.
  277.  
  278.   9th November, 1997
  279.     • A bug in the disassembly code was fixed. Attempting to disassemble the
  280.       MOVEM instruction would cause the instruction to be executed instead, thus
  281.       corrupting the registers and memory.
  282.  
  283.   8th October, 1997
  284.     • Modifications were made to the execution and disassembly code to enable
  285.       emulation of the 68010 processor. This is an optional feature and it is
  286.       still possible to emulate the 68000 processor as well.
  287.  
  288.   2nd October, 1997
  289.     • Spotted and fixed a minor bug whilst browsing through the assembly
  290.       language source code. Also did a small amount of general optimisation.
  291.  
  292.   28th September, 1997
  293.     • Added a 68000 disassembler to the code to speed up error location.
  294.       Currently the disassembler is only used when specific breakpoints are set
  295.       in the source code, but eventually I plan to make use of it in an
  296.       integrated debugger.
  297.  
  298.   23rd September, 1997
  299.     • Support was added for the MessageTrans module, so that all textual
  300.       messages can be kept in a separate file, instead of being stored with the
  301.       code.
  302.  
  303.   19th September, 1997
  304.     • The two instructions NBCD and SBCD, for handling binary coded decimal
  305.       numbers, were finally implemented. This means that STem can now emulate
  306.       the entire 68000 instruction set, although there are still a few
  307.       discrepancies in the way the condition code flags are set.
  308.  
  309.   14th September, 1997
  310.     • More changes were made to the configuration program. It is now possible to
  311.       enter the filename of TOS and disk images directly into the program,
  312.       instead of having to manually enter them from the command line. Several
  313.       minor bugs were also removed.
  314.  
  315.   13th September, 1997
  316.     • The configuration program was improved by allowing multiple groups of
  317.       settings to be created and saved.
  318.  
  319.   7th September, 1997
  320.     • Vast portions of the disk controller code were re-written with the aim of
  321.       improving error detection and handling. A basic ability to read and write
  322.       sectors to the real floppy disk drive were added, but this is not yet as
  323.       robust as I would like - a few of my tests resulted in corrupted disks!
  324.  
  325.   5th September, 1997
  326.     • Yet another bug was discovered in the code for emulating the division
  327.       instructions of the microprocessor. When a signed division was being
  328.       performed and the quotient ended up negative, the remainder was
  329.       inadvertently being set to minus one.
  330.  
  331.   2nd September, 1997
  332.     • The code for emulating the WD1772 floppy disk controller was substantially
  333.       re-written. Previously, all commands to the disk controller were executed
  334.       immediately - an entirely unrealistic situation as disk drives are very
  335.       slow. This has been solved by allowing the disk controller to execute
  336.       commands at it's own pace, whilst allowing the other sub-systems of the
  337.       emulator to continue working simultaneously.
  338.  
  339.   6th August, 1997
  340.     • Some proper documentation, about how to setup and use the emulator, was
  341.       written. It will be distributed with all copies of STem, and can be
  342.       accessed via the 'Help' option in the filer menu. At a later date, it may
  343.       be converted into HTML and/or OvationPro format, so that screen shots and
  344.       diagrams can be included as well.
  345.  
  346.   2nd August, 1997
  347.     • Support was added for joysticks, and STem should be able to automatically
  348.       detect whether there are any installed. None of the joystick code has been
  349.       tested yet, so just incase it doesn't work correctly it is disabled by
  350.       default. A command line option is provided to re-enable it.
  351.  
  352.   31st July, 1997
  353.     • As a trial, STem was compiled and linked using the Shared C Library,
  354.       instead of UnixLib. The resulting 50% reduction in code size, and
  355.       seemingly better memory management, was enough to make the change a
  356.       permanent one.
  357.  
  358.   29th July, 1997
  359.     • A small modification was made to the code which decodes instructions.
  360.       Some illegal instructions were being wrongly identified and then
  361.       executed, when they should have been generating exceptions. This resulted
  362.       in a debugger, which uses illegal instructions as breakpoints, from
  363.       stopping at the required place.
  364.  
  365.   25th July, 1997
  366.     • The graphics system has been improved by allowing the emulator to
  367.       automatically select the resolution, pixel depth, and frequency from all
  368.       those available on the host computer. When the requested screen
  369.       resolution cannot be obtained exactly, it will try to use a larger
  370.       resolution instead. Where there is a choice of vertical frequencies, the
  371.       mode with the higher one will always be chosen.
  372.  
  373.   24th July, 1997
  374.     • The trace state of the processor was altered slightly so that the trace
  375.       exception will now occur at the correct part of the fetch-decode-execute
  376.       cycle. Also, the question of exception priorities has been resolved, e.g.
  377.       if a trace occurs at the same time as an external interrupt whilst a
  378.       trap instruction is being executed, then they will be dealt with in the
  379.       correct order.
  380.  
  381.   22nd July, 1997
  382.     • Eventually tracked down and fixed an obscure bug, which caused the
  383.       operating system to crash when loading some programs. The operating
  384.       system was trying to save the stack pointer on the stack itself, but this
  385.       was being done incorrectly, leading to all the registers being corrupted.
  386.       Though why the operating system should want to do this is beyond me?
  387.  
  388.   14th July, 1997
  389.     • Various minor changes were made to the 68000 emulator and the memory
  390.       management unit, resulting in a small increase in speed. The
  391.       write-protect status for the floppy disk drives are now reported
  392.       correctly. Several other bugs were also eliminated.
  393.  
  394.   26th June, 1997
  395.     • The multitasking front end was completely re-written. It is now much more
  396.       user friendly, and can provide on-line help for all features.
  397.  
  398.   24th June, 1997
  399.     • The keyboard was mapped in, and characters can now be send via the ACIA
  400.       chips to the processor. A basic mouse handler was installed, which means
  401.       that GEM menus and dialogue boxes can be accessed.
  402.  
  403.   21st June, 1997
  404.     • The microprocessor was optimised, and a few more instructions were
  405.       implemented. A major milestone was reached, with the GEM desktop
  406.       appearing for the first time.
  407.  
  408.   16th June, 1997
  409.     • Removed the operating system patches for the floppy/hard disk routines,
  410.       and provided proper emulation of the DMA/FDC chips instead. Also, a bug
  411.       in the ALU, whereby the CCR was not being updated after logic operations,
  412.       was fixed.
  413.  
  414.   11th June, 1997
  415.     • A very nasty problem involving the carry flag was discovered - it turns
  416.       out that the 68000 processor sets this flag differently to the ARM
  417.       processor under certain circumstances! The exact details of the C flag
  418.       are not mentioned in any assembler books, so I have no idea whether my
  419.       current implementation is correct.
  420.  
  421.   10th June, 1997
  422.     • The graphics system was improved, so that rather than redrawing the
  423.       screen continuously, it will only be updated when something has changed.
  424.       Also, the routine to change the palette is now much faster, because a
  425.       look-up table is used instead of doing lots of complex maths.
  426.  
  427.   3rd June, 1997
  428.     • Located & fixed a major bug in the division instructions (sounds similar
  429.       to a certain Pentium problem, doesn't it?). The destination register
  430.       was being zeroed, instead of storing the results of the division.
  431.  
  432.   13th May, 1997
  433.     • A program was successfully loaded from a disk image and executed. The
  434.       program was contained in the boot sector of the disk, and displayed a
  435.       smiley face on the screen.
  436.  
  437.   27th April, 1997
  438.     • TOS crashed, and displayed the familiar 'cherry bombs' on the screen -
  439.       thus providing evidence that the emulated video system was working
  440.       correctly.
  441.  
  442.   9th February, 1997
  443.     • The very first instruction was fetched, decoded and executed. The
  444.       instruction was NOP, so it didn't do anything useful.
  445.  
  446.   7th February, 1997
  447.     • The project was started. I don't quite remember why, but I'm sure I had
  448.       a good reason at the time!
  449.  
  450.  
  451.  
  452. !STem is © Copyright Samuel Ellis, 1998.
  453.